<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		1. 阅读如下代码，分析输出，并说明为什么。
		输出0和1，f1(); f2(); 输出0  第二次的f1();输出1
		第二次循环重新计算i++，所以等于1
		
		```js
		let foo = function() {
			let i = 0;
			return function() {
				console.log(i++);
			}
		}
		let f1 = foo();
		let f2 = foo();
		f1(); // ?
		f2(); // ?
		f1(); // ?
		```
		
		2. 阅读如下代码，分析输出，并说明为什么。
		输出102和201 在function外有设置x和let f = funA(101);，function块里设置了x += 1;
		所以console.log(x);输出102；function块里设置了let y = 201，
		所以从里到外找数据，输出201
				
				
		```js
		let x = 100;
		let y = 200;
		let funA = function(x) {
			x += 1;
			let y = 201;
			let funB = function(){
				console.log(x); // ?
				console.log(y); // ?
			}
			return funB;
		}
		let f = funA(101);
		f();
		```
		
		3. 阅读如下代码，分析输出，并说明为什么。
		输出7和11
		
		```js
		function makeAdder(x) {
			return function(y) {
				return x + y;
			};
		}
		
		let add5 = makeAdder(5);
		let add10 = makeAdder(10);
		
		console.log(add5(2));  // ?
		console.log(add10(2)); // ?
		```
		
		1. 面向对象的三大特征是？
		三大基本特征:封装、继承、多态
		
		2. 面向对象中封装是指什么呢？
		封装就是隐藏对象的属性和实现细节，仅对外公开接口，控制在程序中属性的读和修改的访问级别，将抽象得到的数据和行为（或功能）相结合，
		形成一个有机的整体，也就是将数据与操作数据的源代码进行有机的结合，形成“类”，其中数据和函数都是类的成员。
		
		3. js中声明类是用什么关键词，和java或者C#有什么不同？
		Class，JAVA有虚拟机可以跨平台,C#必须要在.NET FrameWork下运行。
		
		4. js中构造函数内的this是指向哪里？
		构造函数的this指向创建的实例对象
		
	</body>
</html>
